Apache Tapestry একটি component-based web framework, যা Model-View-Controller (MVC) আর্কিটেকচারের মাধ্যমে ওয়েব অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। Tapestry-তে পেজ এবং কম্পোনেন্ট প্রধান ভূমিকা পালন করে। এগুলো ব্যবহার করে ডেভেলপাররা UI উপাদান এবং লজিক কাঠামো তৈরি করতে পারেন।
Tapestry-তে পেজ হলো একটি বিশেষ ধরনের কম্পোনেন্ট যা HTML টেমপ্লেট এবং Java ক্লাস দ্বারা গঠিত। প্রতিটি পেজ সাধারণত একটি .tml (Tapestry Markup Language) ফাইল এবং তার সাথে সম্পর্কিত একটি Java ক্লাস দ্বারা পরিচালিত হয়।
উদাহরণ:
<!DOCTYPE html>
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Welcome Page</title>
</head>
<body>
<h1>Welcome to Apache Tapestry!</h1>
</body>
</html>
t:
prefix ব্যবহৃত Tapestry ট্যাগগুলোর মাধ্যমে কম্পোনেন্ট এবং তাদের অ্যাকশন সংযুক্ত করা হয়।উদাহরণ:
@Import(stylesheet = "styles.css")
public class WelcomePage {
// পেজের লজিক এখানে থাকবে
}
কম্পোনেন্ট হলো Tapestry এর কেন্দ্রীয় উপাদান, যা UI এর পুনঃব্যবহারযোগ্য অংশ হিসেবে কাজ করে। প্রতিটি কম্পোনেন্ট একটি স্বতন্ত্র UI উপাদান এবং তার সাথে যুক্ত ব্যবসায়িক লজিক ধারণ করে।
HTML টেমপ্লেট
Tapestry এর কম্পোনেন্টগুলি HTML টেমপ্লেট ব্যবহার করে UI ডিজাইন করতে সহায়ক। এতে কম্পোনেন্টের জন্য নির্দিষ্ট Tapestry tags ব্যবহৃত হয়। উদাহরণ:
<form t:action="submitForm">
<input type="text" t:id="userName"/>
<button type="submit">Submit</button>
</form>
এখানে t:action
এবং t:id
ট্যাগগুলি Tapestry দ্বারা ব্যবহৃত কম্পোনেন্ট ট্যাগ।
উদাহরণ:
@Component
public class UserForm {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@OnEvent("submit")
public void submitForm() {
// ফর্ম সাবমিট লজিক
}
}
@OnEvent
অ্যাট্রিবিউট ব্যবহার করে বিভিন্ন ইভেন্ট হ্যান্ডলিং করা যায়।পেজে কম্পোনেন্ট ব্যবহারের উদাহরণ একটি পেজে একাধিক কম্পোনেন্ট ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, একটি ফর্ম পেজের মধ্যে TextField
, Button
কম্পোনেন্ট যুক্ত করা যেতে পারে।
<form t:action="submitForm">
<t:textfield t:id="userName"/>
<t:button t:id="submitButton" t:value="Submit"/>
</form>
Apache Tapestry এর পেজ এবং কম্পোনেন্ট ব্যবহারের মাধ্যমে ডেভেলপাররা ওয়েব অ্যাপ্লিকেশনের UI এবং লজিক কাঠামো তৈরি করেন। পেজ হলো একটি বড় কম্পোনেন্ট যা UI উপাদান এবং ব্যবসায়িক লজিক পরিচালনা করে, আর কম্পোনেন্ট হলো ছোট, পুনঃব্যবহারযোগ্য উপাদান যা UI এর বিভিন্ন অংশকে তৈরি করে। Tapestry এর এই ডিজাইন অ্যাপ্লিকেশন ডেভেলপমেন্টকে সহজ, পরিষ্কার এবং স্কেলেবল করে তোলে।
Apache Tapestry একটি component-based ফ্রেমওয়ার্ক যা Model-View-Controller (MVC) আর্কিটেকচার অনুসরণ করে, তবে এটি component-oriented programming (COP) ব্যবহারের মাধ্যমে ডেভেলপারদের UI উপাদানগুলোকে পুনঃব্যবহারযোগ্য করে তোলে। Tapestry তে pages এবং page logic তৈরি করার জন্য নির্দিষ্ট প্রক্রিয়া অনুসরণ করতে হয়। এই প্রক্রিয়া অনুসরণ করে আপনি সহজেই ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।
Tapestry-তে প্রতিটি পেজ মূলত দুটি অংশ নিয়ে গঠিত:
পেজ তৈরি করার প্রক্রিয়া নিচে দেওয়া হলো:
প্রথমে, আপনার পেজের জন্য একটি TML (Tapestry Markup Language) ফাইল তৈরি করতে হবে। এটি HTML টেমপ্লেটের মতো কাজ করবে এবং Tapestry এর কম্পোনেন্ট ও ট্যাগগুলোর সাহায্যে UI তৈরি করবে।
যেমন: HomePage.tml
<!DOCTYPE html>
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Welcome to Tapestry</title>
</head>
<body>
<h1>Welcome to Tapestry!</h1>
<t:form t:id="myForm">
<t:textfield t:id="nameField" placeholder="Enter your name"/>
<t:button t:id="submitButton" value="Submit"/>
</t:form>
</body>
</html>
এই TML ফাইলটি একটি সাধারণ HTML টেমপ্লেট, যেখানে একটি ফর্ম রয়েছে এবং একটি textfield
এবং button
কম্পোনেন্ট ব্যবহার করা হয়েছে।
এখন, আপনার পেজের লজিক এবং ডেটা হ্যান্ডলিংয়ের জন্য একটি Java ক্লাস তৈরি করতে হবে। Tapestry-তে এই Java ক্লাসটি Page Class হিসেবে পরিচিত, এবং এটি সাধারণত Page নামের সাথে সংযুক্ত থাকে।
যেমন: HomePage.java
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.ioc.annotations.Inject;
public class HomePage {
@Property
private String name;
// Event handler for form submission
@OnEvent(value = "submit")
void submit() {
System.out.println("Form submitted with name: " + name);
}
}
এখানে:
name
প্রপার্টি ডেটাকে Tapestry পেজের মধ্যে bind করে।submit
মেথডটি কল হবে এবং ব্যবহারকারীর নামটি কনসোলে প্রদর্শিত হবে।এখন যে পেজ তৈরি করা হয়েছে, তাতে লজিক এবং UI একত্রিত হয়েছে। যখন ব্যবহারকারী ফর্ম সাবমিট করবেন, তখন Java ক্লাস এবং TML ফাইল একে অপরের সাথে ইন্টারঅ্যাক্ট করবে।
submit
মেথডটি চলবে।name
প্রপার্টি TML ফাইলের textfield
কম্পোনেন্টের সাথে সংযুক্ত, তাই ইনপুট ভ্যালু HomePage.java তে জমা হবে।Maven দিয়ে প্রজেক্ট বিল্ড করুন
প্রজেক্ট বিল্ড করতে Maven কমান্ডটি ব্যবহার করুন:
mvn clean package
Tomcat-এ ডিপ্লয় করুন
.war
ফাইলটি তৈরি হলে, এটি Tomcat বা অন্য কোনো Servlet Container তে ডিপ্লয় করুন:
cp target/my-tapestry-app-1.0-SNAPSHOT.war /path/to/tomcat/webapps/
অ্যাপ্লিকেশন চালু করুন
Tomcat সার্ভার চালু করুন এবং ব্রাউজারে অ্যাপ্লিকেশন চেক করুন:
http://localhost:8080/my-tapestry-app/HomePage
Apache Tapestry-তে পেজ তৈরি করা এবং পেজ লজিক পরিচালনা করা সহজ। TML (Tapestry Markup Language) ফাইল দিয়ে UI তৈরি করা হয়, এবং Java ক্লাসে পেজ লজিক এবং ইন্টারঅ্যাকশন পরিচালনা করা হয়। @Property
অ্যানোটেশন দিয়ে ডেটা Tapestry পেজে bind করা যায় এবং @OnEvent
দিয়ে বিভিন্ন event handler তৈরি করা যায়, যেমন ফর্ম সাবমিশন ইভেন্ট। Maven এবং Tomcat ব্যবহার করে Tapestry অ্যাপ্লিকেশন ডিপ্লয় এবং রান করা সম্ভব।
Apache Tapestry একটি component-based framework, যেখানে প্রতিটি UI উপাদান (কম্পোনেন্ট) একটি স্বতন্ত্র, পুনঃব্যবহারযোগ্য ইউনিট হিসেবে কাজ করে। Tapestry কম্পোনেন্টস গুলি HTML টেমপ্লেট এবং Java ক্লাস দ্বারা গঠিত হয় এবং বিভিন্ন ডাটা প্রক্রিয়া এবং UI রেন্ডারিং পরিচালনা করে। Tapestry ফ্রেমওয়ার্কের সবচেয়ে বড় সুবিধা হচ্ছে এর component-based পদ্ধতি, যা অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও সহজ, পরিষ্কার এবং কার্যকর করে।
এখানে আমরা কম্পোনেন্ট এবং কাস্টম কম্পোনেন্ট তৈরি করার প্রক্রিয়া সম্পর্কে আলোচনা করব।
Tapestry একটি কম্পোনেন্ট তৈরি করতে HTML টেমপ্লেট এবং Java ক্লাসের সমন্বয় ব্যবহার করে। প্রতিটি কম্পোনেন্ট তার নিজস্ব টেমপ্লেট এবং ক্লাস দিয়ে গঠিত হয়, যা এর ডেটা ও UI রেন্ডারিং নির্ধারণ করে।
Java ক্লাস তৈরি করুন
প্রথমে, একটি নতুন Java ক্লাস তৈরি করুন। এই ক্লাসটি @Component
অ্যনোটেশন দিয়ে ট্যাগ করা হয় এবং এটি কম্পোনেন্টের আচরণ পরিচালনা করবে।
উদাহরণ:
package com.example.components;
import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
public class HelloWorld {
@Property
@Parameter(required = true)
private String name;
// কম্পোনেন্টের জন্য কোন অতিরিক্ত লজিক বা ফাংশন যোগ করতে পারেন
}
এখানে:
@Property
অ্যনোটেশনটি name
ফিল্ডটিকে প্রপার্টি হিসাবে চিহ্নিত করে, যা Tapestry টেমপ্লেট থেকে ব্যবহৃত হবে।@Parameter
অ্যনোটেশনটি name
প্যারামিটারটি কম্পোনেন্টের মধ্যে ইনপুট হিসেবে প্রদান করতে ব্যবহৃত হবে।HTML টেমপ্লেট তৈরি করুন
কম্পোনেন্টের জন্য HTML টেমপ্লেট তৈরি করুন। এই ফাইলটি .tml
(Tapestry Markup Language) এক্সটেনশন সহ তৈরি হয় এবং কম্পোনেন্টের UI রেন্ডারিংয়ের জন্য ব্যবহৃত হয়।
উদাহরণ:
<!DOCTYPE html>
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Hello World Component</title>
</head>
<body>
<h1>Hello, <t:property value="name"/>!</h1>
</body>
</html>
এখানে:
<t:property value="name"/>
ট্যাগটি Tapestry এর একটি বিশেষ ট্যাগ, যা Java ক্লাসের name
প্রপার্টির মান রেন্ডার করে।একটি কম্পোনেন্ট ব্যবহারের জন্য, আপনি এটি আপনার পেজে টেমপ্লেটের মাধ্যমে অন্তর্ভুক্ত করবেন।
<t:helloWorld name="Tapestry User"/>
এটি HelloWorld
কম্পোনেন্টটিকে ব্যবহার করবে এবং name
প্যারামিটার হিসাবে "Tapestry User"
প্রদান করবে।
Tapestry এ কাস্টম কম্পোনেন্ট তৈরি করতে হলে আপনাকে নিজস্ব UI এলিমেন্ট বা লজিক তৈরি করতে হবে যা প্রজেক্টের নির্দিষ্ট প্রয়োজন পূরণ করবে। কাস্টম কম্পোনেন্ট তৈরি করার জন্য সাধারণত একটি নতুন Java ক্লাস এবং HTML টেমপ্লেট প্রয়োজন হয়।
একটি কাস্টম কম্পোনেন্ট তৈরি করতে, প্রথমে Java ক্লাসে প্রয়োজনীয় ফাংশন এবং বৈশিষ্ট্য যোগ করুন।
উদাহরণ:
package com.example.components;
import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
public class Greeting {
@Property
@Parameter(required = true)
private String name;
@Property
private String message;
public void onPrepare() {
// এখানে আপনার লজিক রাখতে পারেন
message = "Hello, " + name + "!";
}
}
এখানে:
onPrepare()
মেথডটি কম্পোনেন্ট লোড হওয়ার আগে এক্সিকিউট হবে এবং এটি message
প্রপার্টি সেট করবে।এরপর, HTML টেমপ্লেটে আপনার কম্পোনেন্টের UI ডিজাইন তৈরি করুন।
<!DOCTYPE html>
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Greeting Component</title>
</head>
<body>
<h1><t:property value="message"/></h1>
</body>
</html>
এখানে:
<t:property value="message"/>
ট্যাগটি message
প্রপার্টির মান রেন্ডার করে।আপনি কাস্টম কম্পোনেন্টটি পেজে ব্যবহার করতে পারেন:
<t:greeting name="John Doe"/>
এটি Greeting
কম্পোনেন্টকে ব্যবহার করবে এবং name
প্যারামিটার হিসেবে "John Doe"
প্রদান করবে। এটি ব্যবহারকারীর জন্য একটি স্বাগত বার্তা (যেমন, "Hello, John Doe!") প্রদর্শন করবে।
Apache Tapestry-তে কম্পোনেন্ট তৈরি করা একটি গুরুত্বপূর্ণ অংশ। প্রতিটি কম্পোনেন্ট নিজের UI এবং ব্যবসায়িক লজিক নিয়ে কাজ করে এবং Tapestry-র শক্তিশালী component-based architecture এর অংশ। Tapestry কম্পোনেন্টে Java ক্লাস এবং HTML টেমপ্লেটের মাধ্যমে ডেটা এবং UI রেন্ডারিং পরিচালিত হয়। আপনি সহজেই কাস্টম কম্পোনেন্ট তৈরি করতে পারেন যা নির্দিষ্ট প্রয়োজন মেটাতে সাহায্য করে, এবং সেগুলিকে পুনঃব্যবহারযোগ্য এবং কার্যকর উপায়ে অ্যাপ্লিকেশনটির বিভিন্ন জায়গায় ব্যবহার করা যায়।
Apache Tapestry একটি component-based framework যা আপনাকে UI (User Interface) উপাদানগুলোকে পুনঃব্যবহারযোগ্য কম্পোনেন্ট হিসেবে গঠন করতে সহায়তা করে। Tapestry কম্পোনেন্ট লাইব্রেরি তে অনেক প্রি-বিল্ট কম্পোনেন্ট অন্তর্ভুক্ত রয়েছে, যা আপনার অ্যাপ্লিকেশনকে দ্রুত ডেভেলপ করতে সহায়ক। এই কম্পোনেন্টগুলির মাধ্যমে আপনি সহজে ফর্ম, বাটন, টেবিল, ড্রপডাউন, টেক্সটফিল্ড, এবং অন্যান্য সাধারণ ইউআই উপাদান যোগ করতে পারেন।
এই টিউটোরিয়ালে আমরা Tapestry কম্পোনেন্ট লাইব্রেরি ব্যবহার করার কিছু মৌলিক দিক নিয়ে আলোচনা করব।
Button (t:button)
উদাহরণ:
<t:button value="Click Me" t:id="submitButton" />
Text Field (t:textfield)
উদাহরণ:
<t:textfield value="userInput" t:id="userInputField" />
Checkbox (t:checkbox)
উদাহরণ:
<t:checkbox value="acceptTerms" t:id="termsCheckbox" label="Accept Terms and Conditions" />
DropDown (t:select)
উদাহরণ:
<t:select t:id="countrySelect" value="selectedCountry">
<t:option value="USA">United States</t:option>
<t:option value="IND">India</t:option>
<t:option value="UK">United Kingdom</t:option>
</t:select>
Label (t:label)
উদাহরণ:
<t:label value="User Name" for="userInputField" />
Link (t:link)
উদাহরণ:
<t:link t:id="homeLink" page="home">Go to Home Page</t:link>
Tapestry কম্পোনেন্টগুলির ব্যবহার খুবই সহজ এবং এক্সটেনসিবল। আপনি যখন একটি কম্পোনেন্ট ব্যবহার করতে চান, তখন সাধারণভাবে দুটি জিনিস করবেন:
ধরা যাক, আপনি একটি লগইন ফর্ম তৈরি করতে চান, যেখানে একটি username এবং password টেক্সটফিল্ড থাকবে এবং একটি login বাটন থাকবে।
HTML টেমপ্লেট (login.tml):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Login Form</title>
</head>
<body>
<h2>Login</h2>
<form>
<t:label value="Username" for="username" />
<t:textfield value="username" t:id="username" />
<t:label value="Password" for="password" />
<t:passwordfield value="password" t:id="password" />
<t:button value="Login" t:id="loginButton" />
</form>
</body>
</html>
Java ক্লাস (Login.java):
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
public class Login {
@Property
private String username;
@Property
private String password;
// Login action
public Object onSuccessFromLoginForm() {
if ("admin".equals(username) && "password".equals(password)) {
return Home.class; // Go to the home page after successful login
} else {
return Login.class; // Stay on the login page if credentials are wrong
}
}
}
এখানে:
@Property
এনোটেশন ব্যবহার করে username এবং password ভ্যারিয়েবলগুলোকে binding করা হয়েছে।Tapestry আপনাকে আপনার কম্পোনেন্টগুলিকে কাস্টমাইজ করার জন্য বেশ কিছু বিকল্প দেয়, যেমন:
t:button
বা t:label
এর মতো কম্পোনেন্টের জন্য আপনি CSS ক্লাস ব্যবহার করতে পারেন।Tapestry কম্পোনেন্ট লাইব্রেরি আপনাকে দ্রুত এবং কার্যকর UI উপাদান তৈরি করতে সাহায্য করে। বিভিন্ন প্রি-বিল্ট কম্পোনেন্ট যেমন বাটন, টেক্সটফিল্ড, ড্রপডাউন, চেকবক্স ইত্যাদি ব্যবহার করে আপনি সহজে সমৃদ্ধ এবং ডাইনামিক অ্যাপ্লিকেশন তৈরি করতে পারেন। Tapestry কম্পোনেন্টগুলোর মধ্যে সহজ কাস্টমাইজেশন এবং পুনঃব্যবহারযোগ্যতা রয়েছে, যা ডেভেলপারদের অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও সহজ ও দ্রুত করে তোলে।
Apache Tapestry-তে Event Handlers এবং Listeners এমন মেকানিজম যা ব্যবহারকারীর ইনপুট বা অন্য কোনো কার্যক্রমের প্রতিক্রিয়া হিসেবে অ্যাপ্লিকেশনের মধ্যে ক্রিয়া সম্পাদন করতে ব্যবহৃত হয়। এটি টেমপ্লেট এবং জাভা ক্লাসের মধ্যে ইন্টিগ্রেশন এবং ইউজার ইন্টারঅ্যাকশন হ্যান্ডলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Tapestry-তে ইভেন্ট হ্যান্ডলিং সাধারনত page বা component এর সাথে সম্পর্কিত ইভেন্টের জন্য কোড পরিচালনা করার মাধ্যমে করা হয়। যখন কোনো ইভেন্ট ট্রিগার হয়, তখন নির্দিষ্ট listener method কল করা হয় যা ইভেন্টের জন্য নির্দিষ্ট কাজ সম্পন্ন করে।
Event Handler:
Event Handler সাধারণত on<event>
ফরম্যাটে লেখা হয়। যেমন, একটি বাটনে ক্লিক করার জন্য onClick
ইভেন্ট হ্যান্ডলার ব্যবহার করা যায়।
public Object onClick() {
// বাটন ক্লিক হওয়ার পর যে কাজ করতে চান তা এখানে লিখুন
return SuccessPage.class; // এই পেজে রিডাইরেক্ট হবে
}
Event Listener:
ইভেন্ট লিসেনার মেথড সাধারণত কোনো নির্দিষ্ট ইভেন্টের জন্য তৈরি করা হয়, যেমন onActivate
বা onPassivate
।
public void onActivate() {
// পেজ অ্যাকটিভেট হওয়ার সময় যে কাজ করতে চান তা এখানে লিখুন
}
ধরা যাক, আপনি একটি লগইন ফর্ম তৈরি করতে চান, যেখানে ব্যবহারকারী যদি সঠিক তথ্য প্রদান করে, তাহলে তাকে হোম পেজে রিডাইরেক্ট করা হবে। এই ক্ষেত্রে, একটি Event Handler ব্যবহার করতে হবে।
HTML টেমপ্লেট (login.tml):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<head>
<title>Login Form</title>
</head>
<body>
<h2>Login</h2>
<form>
<t:label value="Username" for="username" />
<t:textfield value="username" t:id="username" />
<t:label value="Password" for="password" />
<t:passwordfield value="password" t:id="password" />
<t:button value="Login" t:id="loginButton" />
</form>
</body>
</html>
Java ক্লাস (Login.java):
package com.example.pages;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.ioc.annotations.Inject;
public class Login {
@Property
private String username;
@Property
private String password;
@SessionState
private boolean loggedIn;
// Login action
public Object onSuccessFromLoginForm() {
if ("admin".equals(username) && "password".equals(password)) {
loggedIn = true; // User is logged in
return Home.class; // Redirect to home page
} else {
return Login.class; // Stay on login page if credentials are wrong
}
}
}
এখানে:
onSuccessFromLoginForm()
হল একটি Event Handler যা লগইন ফর্মটি সফলভাবে সাবমিট হলে কল হয়। এই মেথডটি ইউজারের ইনপুট যাচাই করে এবং সঠিক হলে হোম পেজে রিডাইরেক্ট করে, অন্যথায় লগইন পেজে থাকে।onActivate:
যখন পেজ অ্যাকটিভেট হয়, তখন onActivate()
ইভেন্ট কল হয়। এটি সাধারণত পেজ লোড হওয়ার সময় ডেটা ফেচ করতে ব্যবহার হয়।
public void onActivate() {
// When the page is activated, perform necessary actions
}
onPassivate:
যখন পেজ বা কম্পোনেন্টটি আউটপুটে থাকে, তখন onPassivate()
কল হয়। এটি সাধারণত পেজ স্টেট সংরক্ষণ করতে ব্যবহৃত হয়।
public void onPassivate() {
// Save state before passivation
}
onEvent:
নির্দিষ্ট UI component-এর জন্য ইভেন্ট পরিচালনা করতে onEvent()
ব্যবহার করা হয়, যেমন button click।
public Object onEventFromButton(String event) {
// Perform some action on event
return null;
}
Tapestry ইভেন্টের সাথে প্যারামিটারও পাস করতে পারে। উদাহরণস্বরূপ, আপনি যদি একটি বাটনের ক্লিক ইভেন্টে প্যারামিটার পাস করতে চান:
public Object onClickFromSubmitButton(String parameter) {
// Parameter ব্যবহার করে নির্দিষ্ট লজিক প্রয়োগ করা
return SuccessPage.class;
}
এখানে, parameter
প্যারামিটারটি ইভেন্ট ট্রিগার করার সময় পাঠানো হবে।
Event Handlers এবং Listeners Tapestry অ্যাপ্লিকেশনগুলির ইভেন্ট-ড্রিভেন আচরণ নিশ্চিত করতে ব্যবহৃত হয়। Event Handlers ব্যবহারকারী বা সিস্টেমের কোনো নির্দিষ্ট ক্রিয়ার (যেমন, বাটন ক্লিক বা ফর্ম সাবমিট) প্রতিক্রিয়া হিসেবে কার্যক্রম সম্পাদন করে, এবং Listeners সেই ইভেন্টগুলোর শোনার কাজ করে। Tapestry-তে ইভেন্ট হ্যান্ডলিং সহজ এবং নমনীয়, যা ডেভেলপারদের দ্রুত এবং কার্যকর অ্যাপ্লিকেশন তৈরি করতে সহায়ক।
Read more